package com.canyou.industry.entity.factory;

import java.util.ArrayList;
import java.util.List;

/**
 * 过滤黑名单
 * <p>
 * 给定两个数组, 一个是所有人员的名单数组allArray, 另外一个是黑名单人员的数组blackArray, 返回: 去除黑名单之后的名单数组
 * </p>
 *
 * @author fy
 * @date 2022/8/24 23:44
 */
public class FilterBlack {

    public static void main(String[] args) {
        // 所有人员名单
        String[] allArray = {"张三", "李四", "王五", "赵六"};
        // 黑名单人员
        String[] blackArray = {"张三", "王五"};

        // 过滤黑名单后的人员信息
        FilterBlack filter = new FilterBlack();
        String[] res = filter.fitlerBlack(allArray, blackArray);
        filter.printArr(res);
    }

    private String[] fitlerBlack(String[] allArray, String[] blackArray) {
        // 去除黑名单之后的人员
        List<String> leftList = new ArrayList<>();

        for (int i = 0; i < allArray.length; i++) {
            boolean exist = false;
            String cur = allArray[i];
            // 判断是否存在在黑名单中, 如果存在则exist为true, 不放入最后人员
            for (int j = 0; j < blackArray.length; j++) {
                String blackCur = blackArray[j];
                if (cur.equals(blackCur)) {
                    exist = true;
                    break;
                }
            }
            // 如果不存在在黑名单中则加入最后人员
            if (!exist) {
                leftList.add(cur);
            }
        }
        String[] res = new String[leftList.size()];
        leftList.toArray(res);
        return res;
    }

    private void printArr(String[] arr) {
        if (arr == null || arr.length <= 0) {
            return;
        }
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                System.out.println(arr[i]);
            } else {
                System.out.print(arr[i] + ",");
            }
        }
    }

}
